package com.casa_apoio.estoque.mode.dao;

import com.casa_apoio.estoque.mode.entity.Produto;
import com.casa_apoio.model.dao.HibernateDAO;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

public class ProdutoDAO<T> extends HibernateDAO<T> {

    public ProdutoDAO(Class<T> classe, Session session) {
        super(classe, session);
    }

    public List<Produto> listaProdutos() {
        Criteria criteria = criaCriteria();
        criteria.addOrder(Order.asc("descricao"));
        List<Produto> lista = criteria.list();
        return lista;
    }

    public List<Produto> pesquisaDescricaoCadastrada(String descricao) {
        Criterion filtro = Restrictions.eq("descricao", descricao);
        Criteria criteria = criaCriteria();
        criteria.addOrder(Order.asc("descricao")).add(filtro);
        List<Produto> lista = criteria.list();
        return lista;
    }

    public List<Produto> pesquisaProduto(String descricao) {
        Criterion filtro = Restrictions.like("descricao", descricao + "%");
        Criteria criteria = criaCriteria();
        criteria.addOrder(Order.asc("descricao")).add(filtro);
        List<Produto> lista = criteria.list();
        return lista;
    }

}
